home *** CD-ROM | disk | FTP | other *** search
- package netscape.util;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
-
- public class ClassTable {
- Archive archive;
- String className;
- int classCount;
- String[] classNames;
- int[] classVersions;
- int fieldCount;
- byte[] fieldTypes;
- String[] fieldNames;
- IdHashtable columnForField;
- int rowCapacity;
- int rowCount;
- Object[] fieldColumns;
- int tableId;
- boolean uniqueStrings;
-
- public ClassTable(Archive var1) {
- this.archive = var1;
- }
-
- public ClassTable(Archive var1, ClassInfo var2) {
- this(var1);
- this.className = var2.className();
- this.classCount = var2.classCount();
- this.classNames = var2.classNames();
- this.classVersions = var2.classVersions();
- this.fieldCount = var2.fieldCount();
- this.fieldTypes = var2.fieldTypes();
- this.fieldNames = var2.fieldNames();
- this.fieldColumns = new Object[this.fieldCount];
- }
-
- public Archive archive() {
- return this.archive;
- }
-
- public String className() {
- return this.className;
- }
-
- public String[] classNames() {
- return this.classNames;
- }
-
- public int versionForClassName(String var1) {
- int var3 = this.classCount;
-
- for(int var2 = 0; var2 < var3; ++var2) {
- if (this.classNames[var2].equals(var1)) {
- return this.classVersions[var2];
- }
- }
-
- return 0;
- }
-
- public int rowCount() {
- return this.rowCount;
- }
-
- private Object newColumn(int var1, int var2) {
- switch (var1) {
- case 0:
- return new boolean[var2];
- case 1:
- return new boolean[var2][];
- case 2:
- return new char[var2];
- case 3:
- return new char[var2][];
- case 4:
- return new byte[var2];
- case 5:
- return new byte[var2][];
- case 6:
- return new short[var2];
- case 7:
- return new short[var2][];
- case 8:
- return new int[var2];
- case 9:
- return new int[var2][];
- case 10:
- return new long[var2];
- case 11:
- return new long[var2][];
- case 12:
- return new float[var2];
- case 13:
- return new float[var2][];
- case 14:
- return new double[var2];
- case 15:
- return new double[var2][];
- case 16:
- return new String[var2];
- case 17:
- return new String[var2][];
- case 18:
- return new int[var2];
- case 19:
- return new int[var2][];
- default:
- throw new InconsistencyException("Unknown field type: " + var1);
- }
- }
-
- private void ensureCapacity(int var1) {
- if (var1 > this.rowCapacity) {
- for(int var2 = 0; var2 < this.fieldCount; ++var2) {
- Object var3 = this.newColumn(this.fieldTypes[var2], var1);
- if (this.rowCapacity > 0) {
- System.arraycopy(this.fieldColumns[var2], 0, var3, 0, this.rowCapacity);
- }
-
- this.fieldColumns[var2] = var3;
- }
-
- this.rowCapacity = var1;
- }
- }
-
- private void growCapacity() {
- int var1;
- if (this.rowCapacity == 0) {
- var1 = 8;
- } else {
- var1 = 2 * this.rowCapacity;
- }
-
- this.ensureCapacity(var1);
- }
-
- public int newIdentifier() {
- if (this.rowCount >= this.rowCapacity) {
- this.growCapacity();
- }
-
- int var1 = this.archive.mapIdentifier(this, this.rowCount);
- ++this.rowCount;
- return var1;
- }
-
- public int rowForIdentifier(int var1) {
- return this.archive.rowForIdentifier(var1);
- }
-
- public int columnForField(String var1) {
- if (this.archive.performanceDebug) {
- System.err.println("*** Field " + var1 + " of class " + this.className + " was accessed out of order.");
- }
-
- if (this.columnForField == null) {
- this.columnForField = new IdHashtable(true);
-
- for(int var2 = 0; var2 < this.fieldCount; ++var2) {
- this.columnForField.putKnownAbsent(this.fieldNames[var2], var2 + 1);
- }
- }
-
- int var3 = this.columnForField.get(var1);
- return var3 - 1;
- }
-
- void uniqueStrings(ClassInfo var1) {
- this.setUniqueStrings(true);
- if (var1.fieldCount != this.fieldCount) {
- if (this.archive.performanceDebug) {
- System.err.println("Failed to unique Strings in class " + var1.className());
- }
-
- } else {
- this.columnForField = null;
- String[] var4 = var1.fieldNames;
- String[] var5 = this.fieldNames;
- int var3 = this.fieldCount;
-
- for(int var2 = 0; var2 < var3; ++var2) {
- if (!var5[var2].equals(var4[var2])) {
- if (this.archive.performanceDebug) {
- System.err.println("Failed to unique Strings in class " + var1.className());
- }
-
- return;
- }
-
- var5[var2] = var4[var2];
- }
-
- if (var1.classCount == this.classCount) {
- var4 = var1.classNames;
- var5 = this.classNames;
- var3 = this.classCount;
-
- for(int var6 = 0; var6 < var3; ++var6) {
- if (!var5[var6].equals(var4[var6])) {
- return;
- }
-
- var5[var6] = var4[var6];
- }
-
- }
- }
- }
-
- void setUniqueStrings(boolean var1) {
- this.uniqueStrings = var1;
- }
-
- boolean hasUniqueStrings() {
- return this.uniqueStrings;
- }
-
- public boolean booleanAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((boolean[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setBooleanAt(int var1, int var2, boolean var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((boolean[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public boolean[] booleanArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((boolean[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setBooleanArrayAt(int var1, int var2, boolean[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((boolean[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public char charAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((char[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setCharAt(int var1, int var2, char var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((char[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public char[] charArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((char[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setCharArrayAt(int var1, int var2, char[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((char[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public byte byteAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((byte[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setByteAt(int var1, int var2, byte var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((byte[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public byte[] byteArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((byte[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setByteArrayAt(int var1, int var2, byte[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((byte[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public short shortAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((short[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setShortAt(int var1, int var2, short var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((short[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public short[] shortArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((short[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setShortArrayAt(int var1, int var2, short[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((short[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public int intAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((int[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setIntAt(int var1, int var2, int var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((int[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public int[] intArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((int[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setIntArrayAt(int var1, int var2, int[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((int[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public long longAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((long[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setLongAt(int var1, int var2, long var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((long[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public long[] longArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((long[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setLongArrayAt(int var1, int var2, long[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((long[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public float floatAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((float[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setFloatAt(int var1, int var2, float var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((float[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public float[] floatArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((float[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setFloatArrayAt(int var1, int var2, float[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((float[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public double doubleAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((double[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setDoubleAt(int var1, int var2, double var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((double[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public double[] doubleArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((double[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setDoubleArrayAt(int var1, int var2, double[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((double[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public String stringAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((String[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setStringAt(int var1, int var2, String var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((String[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public String[] stringArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((String[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setStringArrayAt(int var1, int var2, String[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((String[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public int identifierAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((int[])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setIdentifierAt(int var1, int var2, int var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((int[])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public int[] identifierArrayAt(int var1, int var2) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- return ((int[][])this.fieldColumns[var2])[var1];
- }
- }
-
- public void setIdentifierArrayAt(int var1, int var2, int[] var3) {
- if (var1 >= this.rowCount) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else {
- ((int[][])this.fieldColumns[var2])[var1] = var3;
- }
- }
-
- public void writeInfo(OutputStream var1) throws IOException {
- CompactOutputStream var4;
- if (var1 instanceof CompactOutputStream) {
- var4 = (CompactOutputStream)var1;
- } else {
- var4 = new CompactOutputStream(var1);
- }
-
- var4.writeCompactUTF(this.className);
- int var3 = this.fieldCount;
- var4.writeCompactInt(var3);
-
- for(int var2 = 0; var2 < var3; ++var2) {
- var4.writeCompactUTF(this.fieldNames[var2]);
- var4.writeByte(this.fieldTypes[var2]);
- }
-
- var3 = this.classCount;
- var4.writeCompactInt(var3);
-
- for(int var5 = 0; var5 < var3; ++var5) {
- var4.writeCompactUTF(this.classNames[var5]);
- var4.writeCompactInt(this.classVersions[var5]);
- }
-
- var4.writeCompactInt(0);
- }
-
- public void writeData(OutputStream var1) throws IOException {
- CompactOutputStream var5;
- if (var1 instanceof CompactOutputStream) {
- var5 = (CompactOutputStream)var1;
- } else {
- var5 = new CompactOutputStream(var1);
- }
-
- var5.writeCompactInt(this.rowCount);
- int var3 = this.fieldCount;
-
- for(int var2 = 0; var2 < var3; ++var2) {
- if (this.fieldTypes[var2] == 0) {
- this.writeBooleanColumn(var5, (boolean[])this.fieldColumns[var2], this.rowCount);
- }
- }
-
- for(int var6 = 0; var6 < var3; ++var6) {
- Object var4 = this.fieldColumns[var6];
- switch (this.fieldTypes[var6]) {
- case 0:
- break;
- case 1:
- this.writeBooleanArrayColumn(var5, (boolean[][])var4, this.rowCount);
- break;
- case 2:
- this.writeCharColumn(var5, (char[])var4, this.rowCount);
- break;
- case 3:
- this.writeCharArrayColumn(var5, (char[][])var4, this.rowCount);
- break;
- case 4:
- this.writeByteColumn(var5, (byte[])var4, this.rowCount);
- break;
- case 5:
- this.writeByteArrayColumn(var5, (byte[][])var4, this.rowCount);
- break;
- case 6:
- this.writeShortColumn(var5, (short[])var4, this.rowCount);
- break;
- case 7:
- this.writeShortArrayColumn(var5, (short[][])var4, this.rowCount);
- break;
- case 8:
- this.writeIntColumn(var5, (int[])var4, this.rowCount);
- break;
- case 9:
- this.writeIntArrayColumn(var5, (int[][])var4, this.rowCount);
- break;
- case 10:
- this.writeLongColumn(var5, (long[])var4, this.rowCount);
- break;
- case 11:
- this.writeLongArrayColumn(var5, (long[][])var4, this.rowCount);
- break;
- case 12:
- this.writeFloatColumn(var5, (float[])var4, this.rowCount);
- break;
- case 13:
- this.writeFloatArrayColumn(var5, (float[][])var4, this.rowCount);
- break;
- case 14:
- this.writeDoubleColumn(var5, (double[])var4, this.rowCount);
- break;
- case 15:
- this.writeDoubleArrayColumn(var5, (double[][])var4, this.rowCount);
- break;
- case 16:
- this.writeStringColumn(var5, (String[])var4, this.rowCount);
- break;
- case 17:
- this.writeStringArrayColumn(var5, (String[][])var4, this.rowCount);
- break;
- case 18:
- this.writeIntColumn(var5, (int[])var4, this.rowCount);
- break;
- case 19:
- this.writeIntArrayColumn(var5, (int[][])var4, this.rowCount);
- break;
- default:
- throw new InconsistencyException("Unknown field type: " + this.fieldTypes[var6]);
- }
- }
-
- var5.writeCompactInt(0);
- }
-
- private void writeBooleanColumn(CompactOutputStream var1, boolean[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.writeCompactBoolean(var2[var4]);
- }
-
- }
-
- private void writeBooleanArrayColumn(CompactOutputStream var1, boolean[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- boolean[] var5 = var2[var4];
- if (var5 == null) {
- var1.writeCompactInt(-1);
- } else {
- var1.writeCompactInt(var5.length);
- this.writeBooleanColumn(var1, var5, var5.length);
- }
- }
-
- }
-
- private void writeCharColumn(CompactOutputStream var1, char[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.writeChar(var2[var4]);
- }
-
- }
-
- private void writeCharArrayColumn(CompactOutputStream var1, char[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- char[] var5 = var2[var4];
- if (var5 == null) {
- var1.writeCompactInt(-1);
- } else {
- var1.writeCompactInt(var5.length);
- this.writeCharColumn(var1, var5, var5.length);
- }
- }
-
- }
-
- private void writeByteColumn(CompactOutputStream var1, byte[] var2, int var3) throws IOException {
- var1.write(var2, 0, var3);
- }
-
- private void writeByteArrayColumn(CompactOutputStream var1, byte[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- byte[] var5 = var2[var4];
- if (var5 == null) {
- var1.writeCompactInt(-1);
- } else {
- var1.writeCompactInt(var5.length);
- this.writeByteColumn(var1, var5, var5.length);
- }
- }
-
- }
-
- private void writeShortColumn(CompactOutputStream var1, short[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.writeShort(var2[var4]);
- }
-
- }
-
- private void writeShortArrayColumn(CompactOutputStream var1, short[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- short[] var5 = var2[var4];
- if (var5 == null) {
- var1.writeCompactInt(-1);
- } else {
- var1.writeCompactInt(var5.length);
- this.writeShortColumn(var1, var5, var5.length);
- }
- }
-
- }
-
- private void writeIntColumn(CompactOutputStream var1, int[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.writeCompactInt(var2[var4]);
- }
-
- }
-
- private void writeIntArrayColumn(CompactOutputStream var1, int[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int[] var7 = var2[var4];
- if (var7 == null) {
- var1.writeCompactInt(-1);
- } else {
- int var6 = var7.length;
- var1.writeCompactInt(var6);
-
- for(int var5 = 0; var5 < var6; ++var5) {
- var1.writeInt(var7[var5]);
- }
- }
- }
-
- }
-
- private void writeLongColumn(CompactOutputStream var1, long[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.writeLong(var2[var4]);
- }
-
- }
-
- private void writeLongArrayColumn(CompactOutputStream var1, long[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- long[] var5 = var2[var4];
- if (var5 == null) {
- var1.writeCompactInt(-1);
- } else {
- var1.writeCompactInt(var5.length);
- this.writeLongColumn(var1, var5, var5.length);
- }
- }
-
- }
-
- private void writeFloatColumn(CompactOutputStream var1, float[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.writeFloat(var2[var4]);
- }
-
- }
-
- private void writeFloatArrayColumn(CompactOutputStream var1, float[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- float[] var5 = var2[var4];
- if (var5 == null) {
- var1.writeCompactInt(-1);
- } else {
- var1.writeCompactInt(var5.length);
- this.writeFloatColumn(var1, var5, var5.length);
- }
- }
-
- }
-
- private void writeDoubleColumn(CompactOutputStream var1, double[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.writeDouble(var2[var4]);
- }
-
- }
-
- private void writeDoubleArrayColumn(CompactOutputStream var1, double[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- double[] var5 = var2[var4];
- if (var5 == null) {
- var1.writeCompactInt(-1);
- } else {
- var1.writeCompactInt(var5.length);
- this.writeDoubleColumn(var1, var5, var5.length);
- }
- }
-
- }
-
- private void writeStringColumn(CompactOutputStream var1, String[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.writeCompactUTF(var2[var4]);
- }
-
- }
-
- private void writeStringArrayColumn(CompactOutputStream var1, String[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- String[] var5 = var2[var4];
- if (var5 == null) {
- var1.writeCompactInt(-1);
- } else {
- var1.writeCompactInt(var5.length);
- this.writeStringColumn(var1, var5, var5.length);
- }
- }
-
- }
-
- public void readInfo(InputStream var1) throws IOException {
- CompactInputStream var4;
- if (var1 instanceof CompactInputStream) {
- var4 = (CompactInputStream)var1;
- } else {
- var4 = new CompactInputStream(var1);
- }
-
- this.className = var4.readCompactUTF();
- int var3 = var4.readCompactInt();
- this.fieldCount = var3;
- this.fieldNames = new String[var3];
- this.fieldTypes = new byte[var3];
- this.fieldColumns = new Object[var3];
-
- for(int var2 = 0; var2 < var3; ++var2) {
- this.fieldNames[var2] = var4.readCompactUTF();
- this.fieldTypes[var2] = var4.readByte();
- }
-
- var3 = var4.readCompactInt();
- this.classCount = var3;
- this.classNames = new String[var3];
- this.classVersions = new int[var3];
-
- for(int var5 = 0; var5 < var3; ++var5) {
- this.classNames[var5] = var4.readCompactUTF();
- this.classVersions[var5] = var4.readCompactInt();
- }
-
- var3 = var4.readCompactInt();
- if (var3 > 0) {
- var4.skipBytes(var3);
- }
-
- }
-
- public void readData(InputStream var1) throws IOException {
- CompactInputStream var5;
- if (var1 instanceof CompactInputStream) {
- var5 = (CompactInputStream)var1;
- } else {
- var5 = new CompactInputStream(var1);
- }
-
- this.rowCount = var5.readCompactInt();
- this.ensureCapacity(this.rowCount);
- int var3 = this.fieldCount;
-
- for(int var2 = 0; var2 < var3; ++var2) {
- if (this.fieldTypes[var2] == 0) {
- this.readBooleanColumn(var5, (boolean[])this.fieldColumns[var2], this.rowCount);
- }
- }
-
- for(int var6 = 0; var6 < var3; ++var6) {
- Object var4 = this.fieldColumns[var6];
- switch (this.fieldTypes[var6]) {
- case 0:
- break;
- case 1:
- this.readBooleanArrayColumn(var5, (boolean[][])var4, this.rowCount);
- break;
- case 2:
- this.readCharColumn(var5, (char[])var4, this.rowCount);
- break;
- case 3:
- this.readCharArrayColumn(var5, (char[][])var4, this.rowCount);
- break;
- case 4:
- this.readByteColumn(var5, (byte[])var4, this.rowCount);
- break;
- case 5:
- this.readByteArrayColumn(var5, (byte[][])var4, this.rowCount);
- break;
- case 6:
- this.readShortColumn(var5, (short[])var4, this.rowCount);
- break;
- case 7:
- this.readShortArrayColumn(var5, (short[][])var4, this.rowCount);
- break;
- case 8:
- this.readIntColumn(var5, (int[])var4, this.rowCount);
- break;
- case 9:
- this.readIntArrayColumn(var5, (int[][])var4, this.rowCount);
- break;
- case 10:
- this.readLongColumn(var5, (long[])var4, this.rowCount);
- break;
- case 11:
- this.readLongArrayColumn(var5, (long[][])var4, this.rowCount);
- break;
- case 12:
- this.readFloatColumn(var5, (float[])var4, this.rowCount);
- break;
- case 13:
- this.readFloatArrayColumn(var5, (float[][])var4, this.rowCount);
- break;
- case 14:
- this.readDoubleColumn(var5, (double[])var4, this.rowCount);
- break;
- case 15:
- this.readDoubleArrayColumn(var5, (double[][])var4, this.rowCount);
- break;
- case 16:
- this.readStringColumn(var5, (String[])var4, this.rowCount);
- break;
- case 17:
- this.readStringArrayColumn(var5, (String[][])var4, this.rowCount);
- break;
- case 18:
- this.readIntColumn(var5, (int[])var4, this.rowCount);
- break;
- case 19:
- this.readIntArrayColumn(var5, (int[][])var4, this.rowCount);
- break;
- default:
- throw new InconsistencyException("Unknown field type: " + this.fieldTypes[var6]);
- }
- }
-
- var3 = var5.readCompactInt();
- if (var3 > 0) {
- var5.skipBytes(var3);
- }
-
- }
-
- private void readBooleanColumn(CompactInputStream var1, boolean[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var2[var4] = var1.readCompactBoolean();
- }
-
- }
-
- private void readBooleanArrayColumn(CompactInputStream var1, boolean[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = var1.readCompactInt();
- if (var5 >= 0) {
- boolean[] var6 = new boolean[var5];
- var2[var4] = var6;
- this.readBooleanColumn(var1, var6, var5);
- }
- }
-
- }
-
- private void readCharColumn(CompactInputStream var1, char[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var2[var4] = var1.readChar();
- }
-
- }
-
- private void readCharArrayColumn(CompactInputStream var1, char[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = var1.readCompactInt();
- if (var5 >= 0) {
- char[] var6 = new char[var5];
- var2[var4] = var6;
- this.readCharColumn(var1, var6, var5);
- }
- }
-
- }
-
- private void readByteColumn(CompactInputStream var1, byte[] var2, int var3) throws IOException {
- var1.readFully(var2, 0, var3);
- }
-
- private void readByteArrayColumn(CompactInputStream var1, byte[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = var1.readCompactInt();
- if (var5 >= 0) {
- byte[] var6 = new byte[var5];
- var2[var4] = var6;
- this.readByteColumn(var1, var6, var5);
- }
- }
-
- }
-
- private void readShortColumn(CompactInputStream var1, short[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var2[var4] = var1.readShort();
- }
-
- }
-
- private void readShortArrayColumn(CompactInputStream var1, short[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = var1.readCompactInt();
- if (var5 >= 0) {
- short[] var6 = new short[var5];
- var2[var4] = var6;
- this.readShortColumn(var1, var6, var5);
- }
- }
-
- }
-
- private void readIntColumn(CompactInputStream var1, int[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var2[var4] = var1.readCompactInt();
- }
-
- }
-
- private void readIntArrayColumn(CompactInputStream var1, int[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var6 = var1.readCompactInt();
- if (var6 >= 0) {
- int[] var7 = new int[var6];
- var2[var4] = var7;
-
- for(int var5 = 0; var5 < var6; ++var5) {
- var7[var5] = var1.readInt();
- }
- }
- }
-
- }
-
- private void readLongColumn(CompactInputStream var1, long[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var2[var4] = var1.readLong();
- }
-
- }
-
- private void readLongArrayColumn(CompactInputStream var1, long[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = var1.readCompactInt();
- if (var5 >= 0) {
- long[] var6 = new long[var5];
- var2[var4] = var6;
- this.readLongColumn(var1, var6, var5);
- }
- }
-
- }
-
- private void readFloatColumn(CompactInputStream var1, float[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var2[var4] = var1.readFloat();
- }
-
- }
-
- private void readFloatArrayColumn(CompactInputStream var1, float[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = var1.readCompactInt();
- if (var5 >= 0) {
- float[] var6 = new float[var5];
- var2[var4] = var6;
- this.readFloatColumn(var1, var6, var5);
- }
- }
-
- }
-
- private void readDoubleColumn(CompactInputStream var1, double[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var2[var4] = var1.readDouble();
- }
-
- }
-
- private void readDoubleArrayColumn(CompactInputStream var1, double[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = var1.readCompactInt();
- if (var5 >= 0) {
- double[] var6 = new double[var5];
- var2[var4] = var6;
- this.readDoubleColumn(var1, var6, var5);
- }
- }
-
- }
-
- private void readStringColumn(CompactInputStream var1, String[] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- var2[var4] = var1.readCompactUTF();
- }
-
- }
-
- private void readStringArrayColumn(CompactInputStream var1, String[][] var2, int var3) throws IOException {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = var1.readCompactInt();
- if (var5 >= 0) {
- String[] var6 = new String[var5];
- var2[var4] = var6;
- this.readStringColumn(var1, var6, var5);
- }
- }
-
- }
- }
-